home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / pcpm.arc / CPACUI.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-06-04  |  10.3 KB  |  327 lines

  1. 10  REM **** CPACUI ****
  2. 100  CLOSE
  3. 110  T1$="Project: \                                                 \ File: \          \"
  4. 120  T2$="Time Period Units: \             \       Activities: ###     Start Date: \    \"
  5. 130  H1$="ACT      ACTIVITY      FROM  TO  EST  ACT  REPORT  %  SUBCONTRACTOR  ACTIVITY"
  6. 140  H2$="POS    DESCRIPTION     NODE NODE TIME TIME FINISH DUN  CODE  NAME      COST  "
  7. 150  H3$="--- ------------------ ---- ---- ---- ---- ------ --- -------------  ---------"
  8. 160   S$="### \                \ #### #### #### #### ###### ###   ## \       \ #########"
  9. 170  W1$="Enter FROM Node ____  "
  10. 180  W2$="Enter finish date(MMDDYY) or 0 ______"
  11. 190  W3$="Enter percent complete (###) ___ "
  12. 200  W4$="Enter Subcontractor/Comment Code __ "
  13. 210  W5$="Enter activity cost ($) _________"
  14. 220  W6$=" ## \       \ ## \      \ ## \      \"
  15. 230  W7$="Enter  TO  Node ____  "
  16. 240  W8$="Enter Estimated Time ____ "
  17. 250  W9$="____________________________________ "
  18. 260  DEFINT B-Z:DEFSNG A,C
  19. 270  KEY OFF
  20. 280  DIM R3(500),B(500)
  21. 290  DIM S(500),F(500),D$(500),D(500),A6(500),S$(48)
  22. 300  DIM C(500),O2(500),P(500)
  23. 320  GOSUB 2990     'READ INPUT FILE
  24. 330  GOSUB 2880  'READ SUBCONTRACTOR FILE
  25. 340  FOR I=1 TO N:P(I)=I:NEXT
  26. 350  GOTO 370
  27. 360  F=2    'REMINDER TO FILE CHANGES
  28. 370  PRINT
  29. 380  GOSUB 3250
  30. 390  LOCATE 5,25:PRINT "INPUT MODIFICATION MENU"
  31. 400  PRINT:T1=19
  32. 410  PRINT TAB(T1);"EXIT MODIFICATION",TAB(50);" - 0"
  33. 420  PRINT TAB(T1);"CHANGE TITLE",TAB(50);" - 1"
  34. 430  PRINT TAB(T1);"INPUT/ADD ACTIVITIES",TAB(50);" - 2"
  35. 440  PRINT TAB(T1);"DELETE ACTIVITIES",TAB(50);" - 3"
  36. 450  PRINT TAB(T1);"CHANGE ACTIVITY DATA",TAB(50);" - 4"
  37. 460  PRINT TAB(T1);"CHANGE TIME PERIOD UNITS";TAB(50);" - 5"
  38. 470  PRINT TAB(T1);"CHANGE START DATE",TAB(50);" - 6"
  39. 480  PRINT TAB(T1);"INSPECT INPUT ",TAB(50);" - 7"
  40. 490  PRINT TAB(T1);"CHECK NODE CONNECTIONS",TAB(50);" - 8 "
  41. 500  PRINT TAB(T1);"SORT AND FILE INPUT",TAB(50);" - 9 "
  42. 510  PRINT TAB(T1);"FILE CHANGES",TAB(50);" -10"
  43. 520  PRINT
  44. 530  IF F=2 THEN PRINT " **** BE SURE TO FILE ANY CHANGES IF YOU WANT THEM ****"
  45. 540  PRINT
  46. 550  INPUT "Enter number of the modification desired ",N6
  47. 560  IF N6>10 THEN BEEP:GOTO 550
  48. 570  IF N6=0 AND F=2 THEN INPUT "Last changes were not filed - Are you sure (Y/N) ",Q$ ELSE 590
  49. 580  IF LEFT$(Q$,1)<>"Y" THEN 550
  50. 590  IF N6=0 THEN CHAIN "CPAMENU"
  51. 600  ON N6 GOTO 610,650,1010,1180,1650,1740,1770,1940,2650,1860
  52. 610  REM CHANGE TITLE
  53. 620  PRINT " **** PRESENT TITLE IS ";P$
  54. 630  INPUT "Enter new title ";P$
  55. 640  GOTO 360
  56. 650  I=N
  57. 660  VT=42:GOSUB 3250
  58. 670  LOCATE 6,VT:PRINT "Enter Description"
  59. 680  PRINT TAB(VT);W9$:PRINT:PRINT TAB(VT);W1$:PRINT TAB(VT);W7$:PRINT TAB(VT);W8$:PRINT:TB=7
  60. 690  PRINT TAB(VT);W2$:PRINT:PRINT TAB(VT);W3$:PRINT TAB(VT);W4$:PRINT TAB(VT);W5$:GOSUB 3300
  61. 700  COLOR 15,0
  62. 710  I=I+1:TB=7
  63. 720  LOCATE 4,50:PRINT "**** ACTIVITY";I;"****"
  64. 730  LOCATE TB,VT:PRINT "______________________________________"
  65. 740  LOCATE TB,VT:INPUT D$(I)
  66. 750  IF D$(I)="Q" OR D$(I)="QUIT" THEN N=I-1:GOTO 990
  67. 760  LOCATE TB+2,VT+15:PRINT "_____"
  68. 770  LOCATE TB+2,VT+15:INPUT S(I)
  69. 780  LOCATE TB+3,VT+15:PRINT "_____"
  70. 790  LOCATE TB+3,VT+15:INPUT F(I)
  71. 800  D(I)=O2(I)
  72. 810  IF F(I)<=S(I) THEN BEEP:GOTO 770
  73. 820  LOCATE TB+4,VT+21:PRINT "_____"
  74. 830  LOCATE TB+4,VT+21:INPUT O2(I)
  75. 840  D(I)=O2(I)
  76. 850  LOCATE TB+6,VT+30:PRINT "________"
  77. 860  LOCATE TB+6,VT+30:INPUT A6(I)
  78. 870  IF A6(I)<9999 AND A6(I)<>0 THEN 860
  79. 880  TB=TB+1
  80. 890  LOCATE TB+7,VT+28:PRINT "_____"
  81. 900  LOCATE TB+7,VT+28:INPUT R3(I)
  82. 910  LOCATE TB+8,VT+32:PRINT "____"
  83. 920  LOCATE TB+8,VT+32:INPUT B(I)
  84. 930  LOCATE TB+9,VT+23:PRINT "___________"
  85. 940  LOCATE TB+9,VT+23:INPUT C(I)
  86. 950  LOCATE TB+11,VT:INPUT "Enter more activities (Y/N) ";Q$
  87. 960  IF LEFT$(Q$,1)="N" THEN 980
  88. 970  GOTO 710
  89. 980  N=I
  90. 990  COLOR 7,0
  91. 1000  GOTO 360
  92. 1010  PRINT "**** When deleting, start with the last activity first for best results ****"
  93. 1020  GOSUB 2560
  94. 1030  INPUT "Enter position number of the activity to delete - 0 to exit ";X
  95. 1040  IF X>N THEN PRINT "INVALID RESPONSE":BEEP:GOTO 1030
  96. 1050  IF X=0 THEN 360
  97. 1060  IF N>50 THEN PRINT "THINKING . . ."
  98. 1070  FOR I=X TO N-1
  99. 1080  D$(I)=D$(I+1):S(I)=S(I+1):F(I)=F(I+1):O2(I)=O2(I+1):D(I)=D(I+1):A6(I)=A6(I+1):R3(I)=R3(I+1):C(I)=C(I+1):B(I)=B(I+1)
  100. 1090  NEXT
  101. 1100  PRINT "**** ACTIVITY";X;"DELETED-ALL FOLLOWING ACTIVITY POSITIONS ADJUSTED ****"
  102. 1110  N=N-1
  103. 1120  GOTO 1020
  104. 1130  INPUT "Change More Activities (Y/N/#) ",Q$
  105. 1140  IF LEFT$(Q$,1)="N" THEN 360
  106. 1150  IF LEFT$(Q$,1)="Y" THEN 1180
  107. 1160  J=VAL(Q$):GOTO 1200
  108. 1170  REM CHANGE ACTIVITY DATA
  109. 1180  GOSUB 2530
  110. 1190  INPUT "Enter pointer to activity to change ",J
  111. 1200  IF J=0 THEN 1130
  112. 1210  PRINT D$(J);S(J);F(J);O2(J);D(J);A6(J);R3(J);B(J);S$(B(J));C(J)
  113. 1220  PRINT "Change DESC,FROM NODE,TO NODE,TIME,FINDAT, % ,SUBCODE,COST,QUIT "
  114. 1230  INPUT "Enter ( D  ,   FN    ,   TN  ,  T ,  F   , % ,   S   , C  ,or Q) ",Q$
  115. 1240  IF Q$="Q" THEN 1130
  116. 1250  IF Q$="D" THEN 1580
  117. 1260  IF Q$="FN" THEN 1610
  118. 1270  IF Q$="TN" THEN 1630
  119. 1280  IF Q$="T" THEN 1550
  120. 1290  IF Q$="F" THEN 1520
  121. 1300  IF Q$="%" THEN 1400
  122. 1310  IF Q$="S" THEN 1360
  123. 1320  IF Q$<>"C" THEN BEEP:GOTO 1230
  124. 1330  INPUT "Enter new activity cost ";A4
  125. 1340  IF A4>32000 THEN BEEP:PRINT "**** ACTIVITY COSTS MAY NOT EXCEED $32,000 EACH ****":GOTO 1330 ELSE C(J)=INT(A4)
  126. 1350  GOTO 1210
  127. 1360  GOSUB 3260
  128. 1370  INPUT "Enter new code ";B(J)
  129. 1380  REM HIGHLIGHT SUB FROM CPASBC
  130. 1390  GOTO 1210
  131. 1400  PRINT "**** PRESENTLY";R3(J);"PERCENT COMPLETE =$";INT((R3(J)/100)*C(J));"EXPENDED TO DATE ****"
  132. 1410  INPUT "Enter Percent complete, Additional amount or new Total expended (P/A/T) ";Q$
  133. 1420  IF Q$="" OR Q$="P" THEN 1500
  134. 1430  IF Q$="A" THEN 1470
  135. 1440  IF Q$<>"T" THEN BEEP:GOTO 1410 ELSE INPUT "Enter Total expended to date ";A4
  136. 1450  IF A4>32000 THEN BEEP:PRINT "**** TOO MUCH ****":GOTO 1450
  137. 1460  IF C(J)=0 THEN R3(J)=100:C(J)=A4 ELSE R3(J)=INT(A4/C(J)*100)
  138. 1465  GOTO 1485
  139. 1470  INPUT "Enter additional amount ";A4:IF A4>32000 THEN BEEP:PRINT "**** TOO MUCH ****":GOTO 1470
  140. 1480  IF C(J)=0 THEN R3(J)=100:C(J)=A4 ELSE R3(J)=INT(((R3(J)/100)*C(J)+A4)/C(J)*100)
  141. 1485  PRINT "**** NEW PERCENT COMPLETE =";R3(J);"****"
  142. 1490  GOTO 1210
  143. 1500  INPUT "Enter new percent complete ";R3(J)
  144. 1510  GOTO 1210
  145. 1520  INPUT "Enter new Report Finish date (MMDDYY) ";A6(J)
  146. 1530  IF A6(J) <9999 AND A6(J) <> 0 THEN 1520
  147. 1540  GOTO 1210
  148. 1550  INPUT "Enter the new estimated time ";O2(J)
  149. 1560  D(J)=O2(J)
  150. 1570  GOTO 1210
  151. 1580  PRINT TAB(30);"|";SPC(38);"|"
  152. 1590  INPUT "Enter new activity description ";D$(J)
  153. 1600  GOTO 1210
  154. 1610  INPUT "Enter the new FROM node ";S(J)
  155. 1620  GOTO 1210
  156. 1630  INPUT "Enter the new TO node ";F(J)
  157. 1640  GOTO 1210
  158. 1650  REM CHANGE TIME PERIOD UNITS
  159. 1660  PRINT " **** PRESENT TIME UNITS ARE ";T6$;"****"
  160. 1670  INPUT "Enter new time units ",T6$
  161. 1680  IF T6$="DAYS" THEN INPUT "Working, Calendar, or Numbers only (W/C/N) ",Q$ ELSE 1710
  162. 1690  IF LEFT$(Q$,1)="W" THEN T6$="WORKING DAYS"
  163. 1700  IF LEFT$(Q$,1)="C" THEN T6$="CALENDAR DAYS"
  164. 1710  IF LEFT$(T6$,3)="WOR" THEN PRINT " **** NOW ELIGIBLE FOR HOLIDAY OMISSION ****"
  165. 1720  IF LEFT$(T6$,3)="CAL" THEN PRINT " **** PCPM WILL OMIT HOLIDAYS BUT NOT WEEKENDS ****"
  166. 1730  FOR I=1 TO 500:KR$="KRISTY":NEXT :GOTO 360
  167. 1740  PRINT " **** Present start date is ";DA$;" ****"
  168. 1750  INPUT " Enter new start date in MMDDYY format ";DA$
  169. 1760  GOTO 360
  170. 1770  REM INSPECT INPUT FILE
  171. 1780  PRINT " **** PROJECT TITLE :";P$
  172. 1790  PRINT "      TIME UNITS    :";T6$
  173. 1800  PRINT "      START DATE    :";DA$
  174. 1810  PRINT
  175. 1820  INPUT "Press ENTER to continue, or T to terminate listing ",Q$
  176. 1830  IF LEFT$(Q$,1)="T" THEN 1850
  177. 1840  GOSUB 2340
  178. 1850  CLS:GOTO 380
  179. 1860  PRINT "Use ";G$;" as filename (Y/N) ";
  180. 1870  INPUT Q$
  181. 1880  IF LEFT$(Q$,1)="N" THEN INPUT "Enter new filename [.CPM] ",G$
  182. 1890  IF INSTR(1,G$,".")=0 AND LEN(G$)>8 THEN BEEP:PRINT "INVALID FILE NAME":GOTO1710
  183. 1900  IF INSTR(1,G$,".")=0 THEN G$=G$+".CPM"
  184. 1910  IF RIGHT$(G$,4)<>".CPM" THEN BEEP:PRINT "**** INVALID FILE NAME ****":GOTO 1880
  185. 1920  GOSUB 2230
  186. 1930  CLS:GOTO 380
  187. 1940  REM **** CHECKS ************************************
  188. 1950  E9=0:E8=0:L6=S(1):H6=F(1)
  189. 1960  PRINT "**** QUIET - COMPUTER THINKING - CHECKING NODES ****"
  190. 1970  FOR I=2 TO N
  191. 1980  IF S(I)<L6 THEN L6=S(I)
  192. 1990  IF F(I)>H6 THEN H6=F(I)
  193. 2000  NEXT I
  194. 2010  FOR I=1 TO N
  195. 2020  FOR J=1 TO N
  196. 2030  IF S(I)=L6 THEN 2090
  197. 2040  IF S(I)=F(J) THEN 2090
  198. 2050  NEXT J
  199. 2060  PRINT " **** FROM NODE";S(I);"of ";D$(I);" IS UNCONNECTED ****"
  200. 2070  E9=E9+1
  201. 2080  IF I MOD 20=0 THEN PRINT I;
  202. 2090  NEXT I
  203. 2100  IF E9=0 THEN PRINT " **** START NODES O.K. ****"
  204. 2110  FOR I=1 TO N
  205. 2120  FOR J=1 TO N
  206. 2130  IF F(I)=H6 THEN 2180
  207. 2140  IF F(I)=S(J) THEN 2180
  208. 2150  NEXT J
  209. 2160  PRINT " **** TO NODE";F(I);"of ";D$(I);" IS UNCONNECTED ****"
  210. 2170  E8=E8+1
  211. 2180  NEXT I
  212. 2190  IF E8=0 THEN PRINT " **** END NODES O.K. ****":FOR I=1 TO 500:KR$="KRISTY":NEXT
  213. 2200  E9=E9+E8
  214. 2210  IF E9<>0 THEN INPUT "Press ENTER to continue (back to menu) ",Q$
  215. 2220  CLS:GOTO 380
  216. 2230  REM **** ROUTINE TO UPDATE INPUT FILE ****
  217. 2240  OPEN G$ FOR OUTPUT AS #3
  218. 2245  IF LEN(DA$)=5 THEN DA$="0"+DA$
  219. 2250  WRITE #3,P$,T6$,DA$
  220. 2260  FOR I=1 TO N
  221. 2270  W=P(I)
  222. 2280  WRITE #3,D$(W),S(W),F(W),O2(W),D(W),A6(W),R3(W),B(W),C(W)
  223. 2290  NEXT
  224. 2300  PRINT " **** FILE ";G$;" UPDATED ****"
  225. 2310  F=1 'CHANGES FILED
  226. 2320  CLOSE #3
  227. 2330  RETURN
  228. 2340  REM **** INSPECT THE FILE INPUT ****
  229. 2350  GOSUB 2480   'HEADINGS
  230. 2360  IF A1>N OR A1<=0 THEN A1=1
  231. 2370  FOR I=A1 TO N
  232. 2380  IF (I-A1+1)/20<>INT((I-A1+1)/20) THEN 2420
  233. 2390  INPUT "Press ENTER to continue, or T to terminate ",Q$
  234. 2400  IF Q$="T" THEN 2460
  235. 2410  GOSUB 2480
  236. 2420  PRINT USING S$;I,D$(I),S(I),F(I),O2(I),D(I),A6(I),R3(I),B(I),S$(B(I)),C(I)
  237. 2430  NEXT I
  238. 2440  PRINT
  239. 2450  INPUT "Press ENTER to continue ",Q$
  240. 2460  A1=1    'RESET START OF LIST
  241. 2470  RETURN
  242. 2480  REM HEADING FOR INPUT LISTING
  243. 2490  PRINT H1$  'FIRST HEADING LINE
  244. 2500  PRINT H2$    '2ND HEADING LINE
  245. 2510  PRINT H3$    'UNDERLINE FOR HEADING
  246. 2520  RETURN
  247. 2530  IF Z2=1 THEN 2570
  248. 2540  PRINT "**** WHEN CHANGING INPUT, REFER TO THE ACTIVITY POSITION WHICH IS ****"
  249. 2550  PRINT "****            DISPLAYED IN THE INSPECTION ROUTINE.              ****"
  250. 2560  PRINT
  251. 2570  INPUT " Inspect the activity file (Y/N/#) ",Q$
  252. 2580  IF LEFT$(Q$,1)="N" THEN 2630
  253. 2590  IF LEFT$(Q$,1)="Y" THEN 2620
  254. 2600  ON ERROR GOTO 2570
  255. 2610  A1=VAL(Q$)
  256. 2620  GOSUB 2340
  257. 2630  Z2=1
  258. 2640  RETURN
  259. 2650  PRINT "**** SORTING";N;"ACTIVITIES ****";
  260. 2660  REM **** SHELL METZNER SORT ****************************************
  261. 2670  J=N
  262. 2680  FOR I=1 TO N:P(I)=J:J=J-1:NEXT I
  263. 2690  M=N
  264. 2700  M=INT(M/2)
  265. 2710  IF M=0 THEN 2840
  266. 2720  J=1
  267. 2730  K=N-M
  268. 2740  I=J
  269. 2750  L=I+M
  270. 2760  IF S(P(I))<S(P(L)) THEN 2810
  271. 2770  SWAP P(I),P(L)
  272. 2780  I=I-M
  273. 2790  IF I<1 THEN 2810
  274. 2800  GOTO 2750
  275. 2810  J=J+1
  276. 2820  IF J>K THEN 2700
  277. 2830  GOTO 2740
  278. 2840  PRINT "**** SORT COMPLETE ****"
  279. 2850  PRINT "**** WRITING FILE TO DISK ****":GOSUB 2230
  280. 2860  PRINT "**** READING SORTED FILE  ****":GOSUB 3050
  281. 2870  GOTO 340 'BACK TO MAIN MENU
  282. 2880  ON ERROR GOTO 2980
  283. 2890  OPEN F$+".SBC" FOR INPUT AS #1
  284. 2900  I=0
  285. 2910  I=I+1
  286. 2920  IF EOF(1) THEN 2950
  287. 2930  INPUT #1,S$(I)
  288. 2940  GOTO 2910
  289. 2950  PRINT "**** FILE ";F$;".SBC READ -";I-1;"SUBCONTRACTORS READ ****"
  290. 2960  NSBC=I-1
  291. 2970  RETURN
  292. 2980  PRINT "**** NO SUBCONTRACTOR FILE - CONTINUING ****":RETURN
  293. 2990  REM **** READING IN ALREADY CREATED INPUT FILE ******************
  294. 3000  INPUT "Enter the name of the input file [.CPM] ";G$
  295. 3010  IF G$="Q" OR G$="QUIT" THEN 370
  296. 3020  P=INSTR(1,G$,"."):IF P<>0 THEN F$=LEFT$(G$,INSTR(1,G$,".")-1) ELSE F$=G$
  297. 3030  IF LEN(F$)>8 THEN PRINT "NOT A VALID PCPM FILE - MUST END IN .CPM OR .SRT":BEEP:GOTO 3000
  298. 3040  ON ERROR GOTO 3190
  299. 3050  G$=F$+".CPM"
  300. 3060  OPEN G$ FOR INPUT AS #3
  301. 3070  INPUT #3,P$,T6$,DA$
  302. 3080  I=0
  303. 3090  I=I+1
  304. 3100  IF EOF(3) THEN 3140
  305. 3110  INPUT #3,D$(I),S(I),F(I),O2(I),D(I),A6(I),R3(I),B(I),C(I)
  306. 3120  IF I/10=INT(I/10) THEN PRINT I;
  307. 3130  GOTO 3090
  308. 3140  N=I-1
  309. 3150  M6=VAL(LEFT$(DA$,2)):D6=VAL(MID$(DA$,3,2)):Y6=VAL(RIGHT$(DA$,2))
  310. 3160  CLOSE #3
  311. 3170  PRINT " **** INPUT FILE READ ****"
  312. 3180  RETURN
  313. 3190  PRINT "**** NEW FILE ****":F=2:N=0
  314. 3200  INPUT "Enter Project Title (50 char) ";P$
  315. 3210  INPUT "Enter Time Period Units (Working , Calendar , Weeks)....";T6$
  316. 3220  INPUT "Enter start date in MMDDYY format (5 or 6 characters)...";DA$
  317. 3230  IF LEN(DA$)<5 OR LEN(DA$)>6 THEN BEEP:PRINT "INVALID DATE":GOTO 3220
  318. 3240  GOSUB 2880:GOTO 650
  319. 3250  CLS:COLOR 15,0,0:PRINT USING T1$;P$,G$:PRINT USING T2$;T6$,N,DA$:COLOR 7,0,0:RETURN
  320. 3260  REM PRINT SUBCONTRACTOR CODES TO RIGHT OF INPUT SCREEN
  321. 3270  COLOR 15,0:PRINT TAB(25);"SUBCONTRACTOR/COMMENT CODES":COLOR 7,0
  322. 3280  FOR K2=1 TO 16:PRINT USING W6$;K2,S$(K2),K2+16,S$(K2+16),K2+32,S$(K2+32):NEXT
  323. 3290  RETURN
  324. 3300  COLOR 15,0:LOCATE 5,4:PRINT "SUBCONTRACTOR/COMMENT CODES":COLOR 7,0
  325. 3310  FOR J=1 TO 16:LOCATE 5+J,1:PRINT USING W6$;J,S$(J),J+16,S$(J+16),J+32,S$(J+32):NEXT
  326. 3320  RETURN
  327.